Public Sub test_all_case()
    test_trimRight
    test_trimLeft
    test_trimBy
    test_startsWith
    endsWithTest
    test_isNumStr
    test_removeAllNum
    test_removeChar
    test_extractNum
    test_extractNumAndEn
    test_isEnStr
    test_addLeftZeroForNum
    test_repeatStr
    test_removeByRangeTag
    test_firstIsUpperCase
    test_firstIsLowerCase
    test_camel2Snake
    test_splitHoldDelimiter
    test_regReplaceAll
    test_removeAllByReg
    test_compareRightAndUpdate
    test_compareLeftAndUpdate
    test_deleteStrEndLineBreaks
    test_substring
    test_repeatLeftParenthesis
    test_repeatRightParenthesis

    ' 测试: 搜索第一个不是指定目标字符 `target` 的字符在 `str` 中的索引
    test_findFirstNoTargetIndex

    test_splitByAnyLineBreak

    test_isAllSameChar
    test_isAllSameSpecialChar
    test_escapeTargetStr
End Sub

Private Sub test_trimRight()
    Dim a As String
    Dim result As String

    a = "912345678999"
    result = UtilsString.trimRight(a, "9")
    ' ------------case1---------------
    Debug.Assert result = "912345678"

    a = " 123 45678   "
    result = UtilsString.trimRight(a, " ")
    ' ------------case2---------------
    Debug.Assert result = " 123 45678"

    a = "    "
    result = UtilsString.trimRight(a, " ")
    ' ------------case3---------------
    Debug.Assert result = ""

    'empty test
    a = ""
    result = UtilsString.trimRight(a, " ")
    ' ------------case4---------------
    Debug.Assert result = ""

    'vblf test
    a = "aaa" & vbLf & vbLf & vbLf
    result = UtilsString.trimRight(a, vbLf)
    ' ------------case5---------------
    Debug.Assert result = "aaa"

    a = "aaa123123123"
    result = UtilsString.trimRight(a, "123")
    '------------case5---------------
    Debug.Assert result = "aaa"

    a = "a\\"
    result = UtilsString.trimRight(a, "\")
    ' ------------case6---------------
    Debug.Assert result = "a"

    a = "a\"
    result = UtilsString.trimRight(a, "\")
    ' ------------case6---------------
    Debug.Assert result = "a"
End Sub

Private Sub test_trimLeft()
    Dim a As String
    Dim result As String

    a = "999912345678"
    result = UtilsString.trimLeft(a, "9")
    ' ------------case1---------------
    Debug.Assert result = "12345678"

    a = "   123 45678 "
    result = UtilsString.trimLeft(a, " ")
    ' ------------case2---------------
    Debug.Assert result = "123 45678 "

    a = "    "
    result = UtilsString.trimLeft(a, " ")
    ' ------------case3---------------
    Debug.Assert result = ""

    'empty test
    a = ""
    result = UtilsString.trimLeft(a, " ")
    ' ------------case4---------------
    Debug.Assert result = ""

    'vblf test
    a = vbLf & vbLf & vbLf & "aaa"
    result = UtilsString.trimLeft(a, vbLf)
    ' ------------case5---------------
    Debug.Assert result = "aaa"

    a = "123123123aaa"
    result = UtilsString.trimLeft(a, "123")
    ' ------------case5---------------
    Debug.Assert result = "aaa"

    a = "\\a"
    result = UtilsString.trimLeft(a, "\")
    ' ------------case5---------------
    Debug.Assert result = "a"

    a = "\a"
    result = UtilsString.trimLeft(a, "\")
    ' ------------case5---------------
    Debug.Assert result = "a"
End Sub

Private Sub test_trimBy()
    Dim a As String
    Dim result As String

    a = "9999123456789999"
    result = UtilsString.trimBy(a, "9")
    ' ------------case1---------------
    Debug.Assert result = "12345678"

    a = "   123 45678 "
    result = UtilsString.trimBy(a, " ")
    ' ------------case2---------------
    Debug.Assert result = "123 45678"

    a = "    "
    result = UtilsString.trimBy(a, " ")
    ' ------------case3---------------
    Debug.Assert result = ""

    'empty test
    a = ""
    result = UtilsString.trimBy(a, " ")
    ' ------------case4---------------
    Debug.Assert result = ""

    'vblf test
    a = vbLf & vbLf & vbLf & "aaa" & vbLf & vbLf & vbLf
    result = UtilsString.trimBy(a, vbLf)
    ' ------------case5---------------
    Debug.Assert result = "aaa"

    a = "123123123aaa123123"
    result = UtilsString.trimBy(a, "123")
    ' ------------case6---------------
    Debug.Assert result = "aaa"

    a = "\\a\\"
    result = UtilsString.trimBy(a, "\")
    ' ------------case7---------------
    Debug.Assert result = "a"

    a = "\a\"
    result = UtilsString.trimBy(a, "\")
    ' ------------case8---------------
    Debug.Assert result = "a"

    a = "a"
    result = UtilsString.trimBy(a, "\")
    ' ------------case9---------------
    Debug.Assert result = "a"
End Sub

Private Sub test_startsWith()
    Dim text As String
    Dim prefix As String
    Dim result As Boolean

    ' ------------case1------------"
    text = "abcdefg"
    prefix = "abc"
    result = UtilsString.startsWith(text, prefix)
    Debug.Assert result = True

    '------------case2------------
    text = "abcdefg"
    prefix = "cdfsf"
    result = UtilsString.startsWith(text, prefix)
    Debug.Assert result = False

    ' ------------case3------------
    text = "aaa"
    prefix = "aaaaaaaa"
    result = UtilsString.startsWith(text, prefix)
    Debug.Assert result = False


    ' ------------case4------------
    text = "aaa"
    prefix = ""
    result = UtilsString.startsWith(text, prefix)
    Debug.Assert result = True
End Sub

Private Sub endsWithTest()
    Dim text As String
    Dim suffix As String
    Dim result As String

    ' ------------case1-----------
    text = "abcdefg"
    suffix = "efg"
    result = UtilsString.endsWith(text, suffix)
    Debug.Assert result = True

    ' ------------case2------------
    text = "abcdefg"
    suffix = "cdfsf"
    result = UtilsString.endsWith(text, suffix)
    Debug.Assert result = False

    ' ------------case3------------
    text = "aaa"
    suffix = "aaaaaaaa"
    result = UtilsString.endsWith(text, suffix)
    Debug.Assert result = False

    ' ------------case4------------
    text = "aaa"
    suffix = ""
    result = UtilsString.endsWith(text, suffix)
    Debug.Assert result = True
End Sub

Private Sub test_isNumStr()
    Dim result As String

    ' ------------case1-----------
    result = UtilsString.isNumStr("")
    Debug.Assert result = False

    ' ------------case2-----------
    result = UtilsString.isNumStr("1234")
    Debug.Assert result = True

    ' ------------case3-----------
    result = UtilsString.isNumStr("12e34")
    Debug.Assert result = False
End Sub

Private Sub test_removeAllNum()
    Dim text As String
    Dim targetChar As String
    Dim result As String

    ' ------------case1-----------
    text = "abcd"
    result = UtilsString.removeAllNum(text)
    Debug.Assert result = "abcd"

    ' ------------case2-----------
    text = "a1b2c3"
    result = UtilsString.removeAllNum(text)
    Debug.Assert result = "abc"

    ' ------------case3-----------
    text = ""
    result = UtilsString.removeAllNum(text)
    Debug.Assert result = ""
End Sub


Private Sub test_removeChar()
    Dim text As String
    Dim targetChar As String
    Dim result As String

    '------------case1-----------
    text = "aaabbbaaaccc"
    targetChar = "a"
    result = UtilsString.removeChar(text, targetChar)
    Debug.Assert result = "bbbccc"
End Sub

Private Sub test_extractNum()
    Dim result As String
    ' ------------case1-----------
    result = UtilsString.extractNum("qqqqq")
    Debug.Assert result = ""

    ' ------------case2-----------
    result = UtilsString.extractNum("1q2q3q4q5q6")
    Debug.Assert result = "123456"

    ' ------------case3-----------
    result = UtilsString.extractNum("")
    Debug.Assert result = ""

    ' ------------case4-----------
    result = UtilsString.extractNum("1234")
    Debug.Assert result = "1234"

    ' ------------case5-----------
    result = UtilsString.extractNum("q9q0")
    Debug.Assert result = "90"

End Sub

Private Sub test_extractNumAndEn()
    Dim text As String
    Dim result As String

    text = "123TFCV sdf ^&&*&("
    result = UtilsString.extractNumAndEn(text)
    Debug.Assert result = "123TFCVsdf"
End Sub

Private Sub test_isEnStr()
    Debug.Assert UtilsString.isEnStr("c") = True
    Debug.Assert UtilsString.isEnStr("C") = True
    Debug.Assert UtilsString.isEnStr("6") = False
    Debug.Assert UtilsString.isEnStr(" ") = False
    Debug.Assert UtilsString.isEnStr("xxxxxx") = True
    Debug.Assert UtilsString.isEnStr(" xxx33333") = False
End Sub

Private Sub test_addLeftZeroForNum()
    Dim result As String

    ' ------------case1-----------
    result = UtilsString.addLeftZeroForNum(123, 2)
    Debug.Assert result = "123"

    ' ------------case2-----------
    result = UtilsString.addLeftZeroForNum(123, 3)
    Debug.Assert result = "123"

    ' ------------case3-----------
    result = UtilsString.addLeftZeroForNum(123, 4)
    Debug.Assert result = "0123"

    ' ------------case4-----------
    result = UtilsString.addLeftZeroForNum(123, 5)
    Debug.Assert result = "00123"
End Sub

Private Sub test_repeatStr()
    Dim a As String
    Dim result As String
    a = "123abc"

    ' ------------case1-----------
    result = UtilsString.repeatStr(a, 3)
    Debug.Assert result = "123abc123abc123abc"

    ' ------------case2-----------
    result = UtilsString.repeatStr(a, 0)
    Debug.Assert result = ""

    ' ------------case3-----------
    result = UtilsString.repeatStr(a, 1)
    Debug.Assert result = "123abc"
End Sub

Private Sub test_removeByRangeTag()
    Dim text As String
    Dim result As String
    text = "123456789012345678"

    result = UtilsString.removeByRangeTag(text, "1", "5")
    Debug.Assert result = "67890678"
    Debug.Assert result
End Sub

Private Sub test_firstIsUpperCase()
    Dim c As String
    Dim result As String

    c = "q"
    result = UtilsString.firstIsUpperCase(c)
    Debug.Assert result = False

    c = "Q"
    result = UtilsString.firstIsUpperCase(c)
    Debug.Assert result = True

    c = "qA"
    result = UtilsString.firstIsUpperCase(c)
    Debug.Assert result = False

    c = "Qa"
    result = UtilsString.firstIsUpperCase(c)
    Debug.Assert result = True
End Sub

Private Sub test_firstIsLowerCase()
    Dim c As String
    Dim result As String

    c = "q"
    result = UtilsString.firstIsLowerCase(c)
    Debug.Assert result = True

    c = "Q"
    result = UtilsString.firstIsLowerCase(c)
    Debug.Assert result = False

    c = "qA"
    result = UtilsString.firstIsLowerCase(c)
    Debug.Assert result = True

    c = "Qa"
    result = UtilsString.firstIsLowerCase(c)
    Debug.Assert result = False
End Sub

Private Sub test_camel2Snake()
    Dim result As String

    result = UtilsString.camel2Snake("AaCccc")
    Debug.Assert result = "aa_cccc"

    result = UtilsString.camel2Snake("AaCcccDDD")
    Debug.Assert result = "aa_cccc_ddd"

    result = UtilsString.camel2Snake("aaCccc")
    Debug.Assert result = "aa_cccc"

    result = UtilsString.camel2Snake("aacccc")
    Debug.Assert result = "aacccc"

    result = UtilsString.camel2Snake("aaC")
    Debug.Assert result = "aa_c"

    result = UtilsString.camel2Snake("Aa")
    Debug.Assert result = "aa"

    result = UtilsString.camel2Snake("aa")
    Debug.Assert result = "aa"

    result = UtilsString.camel2Snake("a")
    Debug.Assert result = "a"

    result = UtilsString.camel2Snake("A")
    Debug.Assert result = "a"
End Sub

Private Sub test_splitHoldDelimiter()
    Dim result() As String

    ' ------------case1-----------
    result = UtilsString.splitHoldDelimiter("T1T2T3", "T")
    Debug.Assert UBound(result) = 2
    Debug.Assert result(0) = "T1"
    Debug.Assert result(1) = "T2"
    Debug.Assert result(2) = "T3"

    ' ------------case2-----------
    result = UtilsString.splitHoldDelimiter("111111T2T3", "T")
    Debug.Assert UBound(result) = 2
    Debug.Assert result(0) = "111111"
    Debug.Assert result(1) = "T2"
    Debug.Assert result(2) = "T3"

    ' ------------case3-----------
    result = UtilsString.splitHoldDelimiter("T1", "T")
    Debug.Assert UBound(result) = 0
    Debug.Assert result(0) = "T1"

    ' ------------case4-----------
    result = UtilsString.splitHoldDelimiter("T", "T")
    Debug.Assert UBound(result) = 0
    Debug.Assert result(0) = "T"
End Sub

Private Sub test_regReplaceAll()
    Dim text As String
    Dim result As String
    text = "1234resssd****---TT"
    result = UtilsString.regReplaceAll(text, "[^0-9a-zA-Z]", "")
    Debug.Assert result = "1234resssdTT"
End Sub


Private Sub test_removeAllByReg()
    Dim text As String
    Dim result As String
    text = "1234resssd****---TT"
    result = UtilsString.removeAllByReg(text, "[^0-9a-zA-Z]")
    Debug.Assert result = "1234resssdTT"

End Sub

'------------------------------

Private Sub test_compareRightAndUpdate()
    Dim text As String
    Dim excepted As String
    Dim updated As String
    Dim result As String

    ' ------------case1-----------
    text = "12345abcd"
    excepted = "45abcd"
    updated = "qwer"
    result = UtilsString.compareRightAndUpdate(text, excepted, updated)
    Debug.Assert result = "123qwer"

    ' ------------case2-----------
    text = "11"
    excepted = "2222"
    updated = "33"
    result = UtilsString.compareRightAndUpdate(text, excepted, updated)
    Debug.Assert result = "11"

    ' ------------case3-----------
    text = "12345abcd"
    excepted = "zxcv"
    updated = "qwer"
    result = UtilsString.compareRightAndUpdate(text, excepted, updated)
    Debug.Assert result = "12345abcd"
End Sub

Private Sub test_compareLeftAndUpdate()
    Dim text As String
    Dim excepted As String
    Dim updated As String
    Dim result As String

    ' ------------case1-----------
    text = "abcd12345"
    excepted = "abcd123"
    updated = "qwer"
    result = UtilsString.compareLeftAndUpdate(text, excepted, updated)
    Debug.Assert result = "qwer45"

    ' ------------case2-----------
    text = "11"
    excepted = "2222"
    updated = "33"
    result = UtilsString.compareLeftAndUpdate(text, excepted, updated)
    Debug.Assert result = "11"

    ' ------------case3-----------
    text = "12345abcd"
    excepted = "zxcv"
    updated = "qwer"
    result = UtilsString.compareLeftAndUpdate(text, excepted, updated)
    Debug.Assert result = "12345abcd"
End Sub

Private Sub test_deleteStrEndLineBreaks()
    Dim text As String
    text = "123"
    Debug.Assert UtilsString.deleteStrEndLineBreaks(text & VbCrLf) = text
    Debug.Assert UtilsString.deleteStrEndLineBreaks(text & VbCrLf & VbCrLf) = text

    Debug.Assert UtilsString.deleteStrEndLineBreaks(text & VbLf) = text
    Debug.Assert UtilsString.deleteStrEndLineBreaks(text & VbLf & VbLf) = text

    Debug.Assert UtilsString.deleteStrEndLineBreaks(text & VbCrLf & VbLf) = text
    Debug.Assert UtilsString.deleteStrEndLineBreaks(text & VbLf & VbCrLf) = text

    Debug.Assert UtilsString.deleteStrEndLineBreaks(text & VbCrLf & VbLf & vbCr) = text
    Debug.Assert UtilsString.deleteStrEndLineBreaks(text & VbCrLf & vbCr & VbLf) = text
    Debug.Assert UtilsString.deleteStrEndLineBreaks(text & vbCr & VbCrLf & VbLf) = text

    ' -------
    ' 空字符串 测试
    Debug.Assert UtilsString.deleteStrEndLineBreaks(VbCrLf) = ""
    Debug.Assert UtilsString.deleteStrEndLineBreaks(VbCrLf & VbCrLf) = ""

    Debug.Assert UtilsString.deleteStrEndLineBreaks(VbLf) = ""
    Debug.Assert UtilsString.deleteStrEndLineBreaks(VbLf & VbLf) = ""

    Debug.Assert UtilsString.deleteStrEndLineBreaks(VbCrLf & VbLf) = ""
    Debug.Assert UtilsString.deleteStrEndLineBreaks(VbLf & VbCrLf) = ""

    Debug.Assert UtilsString.deleteStrEndLineBreaks(VbCrLf & VbLf & vbCr) = ""
    Debug.Assert UtilsString.deleteStrEndLineBreaks(VbCrLf & vbCr & VbLf) = ""
    Debug.Assert UtilsString.deleteStrEndLineBreaks(vbCr & VbCrLf & VbLf) = ""

    ' -------
    ' 无换行符测试
    Debug.Assert UtilsString.deleteStrEndLineBreaks("") = ""
    Debug.Assert UtilsString.deleteStrEndLineBreaks("123") = "123"
End Sub

Private Sub test_substring()
    Dim text As String
    text = "abcde"

    ' ==================================================
    ' 1. 边界测试
    ' ==================================================
    ' 1.1 start < 0
On Error GoTo catch:
    UtilsString.substring text, -1, 4
catch:
    Debug.Assert Err.Number = 10010
    Err.Clear

    ' 1.2 end > text的长度
    Debug.Assert UtilsString.substring(text, 1, Len(text) + 1) = "bcde"

    ' 1.3 start > text的长度
    Debug.Assert UtilsString.substring(text, Len(text) + 1, 3) = ""

    ' 1.4 start >= end
    Debug.Assert UtilsString.substring(text, 2, 1) = ""

    ' 1.5 start = 0
    Debug.Assert UtilsString.substring(text, 0, Len(text)) = "abcde"

    ' ==================================================
    ' 2. 可选参数测试
    ' ==================================================
    Debug.Assert UtilsString.substring(text, 0) = "abcde"
    Debug.Assert UtilsString.substring(text, 1) = "bcde"
End Sub

' 测试: 生成多个左括号
Private Sub test_repeatLeftParenthesis()
    Dim result As String

    result = UtilsString.repeatLeftParenthesis(3)
    Debug.Assert result = "((("

    result = UtilsString.repeatLeftParenthesis(0)
    Debug.Assert result = ""

    result = UtilsString.repeatLeftParenthesis(1)
    Debug.Assert result = "("
End Sub

' 测试: 生成多个右括号
Private Sub test_repeatRightParenthesis()
    Dim result As String

    result = UtilsString.repeatRightParenthesis(3)
    Debug.Assert result = ")))"

    result = UtilsString.repeatRightParenthesis(0)
    Debug.Assert result = ""

    result = UtilsString.repeatRightParenthesis(1)
    Debug.Assert result = ")"
End Sub

' 测试: 搜索第一个不是指定目标字符 `target` 的字符在 `str` 中的索引
Private Sub test_findFirstNoTargetIndex()
    Debug.Assert UtilsString.findFirstNoTargetIndex("   xyz", " ") = 4

    Debug.Assert UtilsString.findFirstNoTargetIndex("xxx", "x") = 0

    Debug.Assert UtilsString.findFirstNoTargetIndex("", "x") = 0

    Debug.Assert UtilsString.findFirstNoTargetIndex("aabc", "aa") = 2

    Debug.Assert UtilsString.findFirstNoTargetIndex("bbbc", "bb") = 3
    Debug.Assert UtilsString.findFirstNoTargetIndex("bbb", "bb") = 0
    Debug.Assert UtilsString.findFirstNoTargetIndex("bbbb", "bb") = 0
    Debug.Assert UtilsString.findFirstNoTargetIndex("bb", "bb") = 0
    Debug.Assert UtilsString.findFirstNoTargetIndex("ab", "bb") = 1
End Sub

Private Sub test_splitByAnyLineBreak()
    Dim result() As String

    result = UtilsString.splitByAnyLineBreak("AAA" & vbCrLf & "BBB" & vbCrLf & "CCC")
    Debug.Assert UBound(result) = 2
    Debug.Assert result(0) = "AAA"
    Debug.Assert result(1) = "BBB"
    Debug.Assert result(2) = "CCC"

    result = UtilsString.splitByAnyLineBreak("AAA" & vbLf & "BBB" & vbCrLf & "CCC")
    Debug.Assert UBound(result) = 2
    Debug.Assert result(0) = "AAA"
    Debug.Assert result(1) = "BBB"
    Debug.Assert result(2) = "CCC"

    result = UtilsString.splitByAnyLineBreak("AAA" & vbCr & "BBB" & vbCrLf & "CCC")
    Debug.Assert UBound(result) = 2
    Debug.Assert result(0) = "AAA"
    Debug.Assert result(1) = "BBB"
    Debug.Assert result(2) = "CCC"

End Sub

Private Sub test_isAllSameChar()
    ' ============================
    ' 1. 测试: 空字符串是否为 True
    ' ============================
    Debug.Assert UtilsString.isAllSameChar("") = True

    ' ============================
    ' 2. 测试: 只有一个字符串时是否为 True
    ' ============================
    Debug.Assert UtilsString.isAllSameChar("a") = True

    ' ============================
    ' 3. 测试: 相同字符组成的字符串是否为 True
    ' ============================
    Debug.Assert UtilsString.isAllSameChar("aaa") = True

    ' ============================
    ' 4. 测试: 不同字符组成的字符串是否为 False
    ' ============================
    Debug.Assert UtilsString.isAllSameChar("ab") = False
End Sub

Private Sub test_isAllSameSpecialChar()
    ' ============================
    ' 1. 测试: 空字符串是否为 False
    ' ============================
    Debug.Assert UtilsString.isAllSameSpecialChar("", "a") = False

    ' ============================
    ' 2. 测试: 只有一个字符串时是否为 True
    ' ============================
    Debug.Assert UtilsString.isAllSameSpecialChar("a", "a") = True

    ' ============================
    ' 3. 测试: 相同字符组成的字符串是否为 True
    ' ============================
    Debug.Assert UtilsString.isAllSameSpecialChar("aaa", "a") = True

    ' ============================
    ' 4. 测试: 不同字符组成的字符串是否为 False
    ' ============================
    Debug.Assert UtilsString.isAllSameSpecialChar("ab", "a") = False
    Debug.Assert UtilsString.isAllSameSpecialChar("ab", "b") = False
    Debug.Assert UtilsString.isAllSameSpecialChar("ab", "c") = False
End Sub

Private Sub test_escapeTargetStr()
    ' ============================
    ' 1. 测试: 替换目标字符
    ' ============================
    Debug.Assert UtilsString.escapeTargetStr("aaa|bbb", "|") = "aaa\|bbb"
    ' ============================
    ' 2. 测试: 替换目标字符，已有转义字符的不需要替换
    ' ============================
    Debug.Assert UtilsString.escapeTargetStr("aaa|bbb\|ccc", "|") = "aaa\|bbb\|ccc"
    ' ============================
    ' 3. 测试: 目标字符在末尾
    ' ============================
    Debug.Assert UtilsString.escapeTargetStr("aaa|bbb|", "|") = "aaa\|bbb\|"
    ' ============================
    ' 4. 测试: 目标字符在末尾，并且前面包含转义字符
    ' ============================
    Debug.Assert UtilsString.escapeTargetStr("aaa|bbb\|", "|") = "aaa\|bbb\|"


    ' ========================================================
    ' 目标字符数量 > 1
    ' ========================================================
    ' ============================
    ' 1. 测试: 替换目标字符
    ' ============================
    Debug.Assert UtilsString.escapeTargetStr("aaa|xbbb", "|x") = "aaa\|xbbb"
    ' ============================
    ' 2. 测试: 替换目标字符，已有转义字符的不需要替换
    ' ============================
    Debug.Assert UtilsString.escapeTargetStr("aaa|xbbb\|xccc", "|x") = "aaa\|xbbb\|xccc"
    ' ============================
    ' 3. 测试: 目标字符在末尾
    ' ============================
    Debug.Assert UtilsString.escapeTargetStr("aaa|xbbb|x", "|x") = "aaa\|xbbb\|x"
    ' ============================
    ' 4. 测试: 目标字符在末尾，并且前面包含转义字符
    ' ============================
    Debug.Assert UtilsString.escapeTargetStr("aaa|xbbb\|x", "|x") = "aaa\|xbbb\|x"
End Sub
